library ieee;
use ieee.std_logic_1164.all;

entity ER is
PORT(
	register_ER_To_Esc_Reg_Entrada: in std_logic;
	register_ER_To_Esc_Reg_Saida: out std_logic;
	register_ER_To_Unidade_Adiantamento: in std_logic;
	saida_Register_ER_Para_Unidade_adiantamento: out std_logic;
	
	registerERToMux: in std_logic;
	dado_lido_da_memoria: in std_logic_vector(31 downto 0);
	resultado_da_ULA: in std_logic_vector(31 downto 0);
	posicao_Reg_A_Ser_Escrito_Entrada: in std_logic_vector(4 downto 0);
	posicao_Reg_A_Ser_Escrito_Saida: out std_logic_vector(4 downto 0);
	saida_Unidade_De_Adiantamento: out std_logic_vector(4 downto 0);
	
	dadoASerEscrito: out std_logic_vector(31 downto 0));
		
END ER;

Architecture behavior of ER is
	signal resultado_Mux: std_logic_vector(31 downto 0);
	begin
		register_ER_To_Esc_Reg_Saida <= register_ER_To_Esc_Reg_Entrada;
		posicao_Reg_A_Ser_Escrito_Saida <= posicao_Reg_A_Ser_Escrito_Entrada;
		resultado_Mux <= dado_lido_da_memoria when (registerERToMux = '1') else
						resultado_da_ULA;
		
		dadoASerEscrito <= resultado_Mux;  	
		
	saida_Register_ER_Para_Unidade_adiantamento <= register_ER_To_Unidade_Adiantamento;
	
	saida_Unidade_De_Adiantamento <= posicao_Reg_A_Ser_Escrito_Entrada;
	
	
				
	end behavior;
	
	
	
	